/**
 * \page	cmd_interior	Command Engine, Interior Protocol
 
\section cmd_def_ascii ASCII Command definition and usage

<p>Use the #COMMAND macro to easily create a new terminal command. The first two parameters
define the name and usage of the command. The last one defines the name of the parameter struct
passed to the command handler function.</p>

<p>Providing the parameter names in the macro has been introduced to make the available
variables more transparent than in previous versions.</p>

<p>When a command as invoked, it is passed pointers to the argument string and to a buffer for the
response. A size is provided for both buffers.
If nothing is written to the response buffer, a positive response &quot;OK&quot; is generated.
@see #cmd_args </p>

<p>Example:</p>

<pre>@code
COMMAND(test, CMDFLAG_NONE, cmdargs) {
	String_write(cmdargs->response_args, "test");
}
@endcode</pre>

<p>will generate a function cmd_test as follows.</p>

<pre>@code
void cmd_test(const cmd_args_t cmdargs) {
	String_write(cmdargs->response_args, "test");
}
@endcode</pre>

<ul>
<li>Lots of examples are found in ScatterWeb.Configuration.c and ScatterWeb.System.Commands.c</li>
<li>For information on the command protocol see \ref cmd_exterior.</li>
<li>@see CMDFLAG_SERIAL, COMMAND</li>
</ul>

\subsection cmd_ascdocs	Documenting

<p>See the <a href="docs.html#docs_commands">documentation page</a> on how to document your commands.</p>

\subsection cmd_ascargs	Handling argument strings

<p>Argument strings are ASCII strings that can be either command specific, but are usually a space separated list of strings To handle 
the latter you should use the provided functions (:Cmd_SplitArgs and :Cmd_GetNextArg) 
to navigate through the argument list.</p>

\section cmd_def_linker	Command Declaration internals

<p>Besides creating the function header each command macro creates a forward declaration
which is then needed in the following definition of a command_t
in the .commands segment. Because all those command_t entries are put into a special segment,
commands can be declared anywhere in the code. This way the command lookup-table is defined.</p>

*/